import { parse } from './parse.js'
import { generate } from './codegen.js'

// html字符串 => render函数
export function compileToFunctions(template) {
  // 1. html 转成 ast 语法树
  let ast = parse(template)

  // 2. 优化静态节点

  // 3. ast 生成代码
  // _c代表创建元素 _v代表创建文本 _s代表文Json.stringify--把对象解析成文本
  let code = generate(ast)

  // 使用with语法改变作用域为this  之后调用render函数可以使用call改变this 方便code里面的变量取值
  let renderFn = new Function(`with(this){return ${code}}`)
  return renderFn
}
